#include <src/test/math/CauchyProblems/CauchyProblems_test.h>
	void CauchyProblems_test() {
		std::cout << std::endl << " ---------------------------------------------------" << std::endl;
		std::cout << std::endl << " --------Starting Cauchy_examples-------" << std::endl;
		typedef Mod_Vector<double>					mod_array_type_1;
		typedef Dirichlet_Vector<double>			dirichlet_array_type_1;
		typedef OS_Vector<double>					protected_array_type_1;
		typedef OS_Vector<protected_array_type_1>	protected_array_type_2;
		typedef particle<OS_double>					p_array_1;
		typedef particles_list<p_array_1>							p_array_2;
		typedef Dirichlet_Vector<dirichlet_array_type_1>			dirichlet_array_type_2;


// finite difference testing
		OS_STATIC_CHECK(protected_array_type_1::Dim==1);
		OS_STATIC_CHECK(protected_array_type_2::Dim==2);
		Cauchy_test< Cauchy_Delta<dirichlet_array_type_2,protected_array_type_2::Dim> >();


		check_cauchy_data<Cauchy_Delta<mod_array_type_1,mod_array_type_1::Dim>, Cauchy_Delta<PeriodicParticle,PeriodicParticle::Dim> >();
		check_cauchy_data<Cauchy_Delta<dirichlet_array_type_1,dirichlet_array_type_1::Dim>, Cauchy_Delta<DirichletParticle,DirichletParticle::Dim> >();

		check_cauchy_data<Cauchy_u_2_Delta<mod_array_type_1,1>, Cauchy_u_2_Delta<PeriodicParticle,1> >();
		check_cauchy_data<Cauchy_u_2_Delta<dirichlet_array_type_1,1>, Cauchy_u_2_Delta<DirichletParticle,1> >();
		

		check_cauchy_data<Cauchy_D_x<mod_array_type_1>, Cauchy_D_x<PeriodicParticle> >();
		check_cauchy_data<Cauchy_D_x<dirichlet_array_type_1>, Cauchy_D_x<DirichletParticle> >();

		check_cauchy_data<Cauchy_D__x<mod_array_type_1>, Cauchy_D__x<PeriodicParticle> >();
		check_cauchy_data<Cauchy_D__x<dirichlet_array_type_1>, Cauchy_D__x<DirichletParticle> >();

		check_cauchy_data<Cauchy_Delta_p_change_1<dirichlet_array_type_1>, Cauchy_Delta_p_change_1<DirichletParticle> >();

		typedef OS_Vector<mod_array_type_1>						array_type_2;
		typedef DirichletParticle_list<PeriodicParticle>		p_array_type_2;
		OS_STATIC_CHECK(mod_array_type_1::Dim == 1);
		OS_STATIC_CHECK(array_type_2::Dim == 2);

		check_cauchy_data<Cauchy_Wave<array_type_2>, Cauchy_Wave<p_array_type_2> >();
		check_cauchy_data<Cauchy_Euler_Wave<array_type_2>, Cauchy_Euler_Wave<p_array_type_2> >();

		Cauchy_test< Cauchy_Entropic_Wave<array_type_2> >();

		Cauchy_test< Cauchy_Entropic_p_system<array_type_2> >();

		typedef Unbounded_Vector<OS_double> unbounded_array_1;
		Cauchy_test< Cauchy_Burger_p<unbounded_array_1> >();
		
// particle<OS_double> method testing
// 1D
		check_cauchy_data<Cauchy_Delta_p<unbounded_array_1>, Cauchy_Delta_p<particle<OS_double>> >();
//	Multi D
// doesn't work : the sobol generator introduces different initial conditions. We should add a clear option to the Sobol Manager.
//		check_cauchy_data<Cauchy_Delta_p<p_array_2>, Cauchy_Delta_p<protected_array_type_2> >();
		Cauchy_test<Cauchy_Delta_p<p_array_2 >>();
		Cauchy_test<Cauchy_Delta_p<protected_array_type_2 >>();
		
		std::cout << std::endl << " -------Ending Cauchy_examples-----" << std::endl;
		std::cout << std::endl << " ---------------------------------------------------" << std::endl;
	}
